package com.yc.collections;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 测试普通for循环、增强for循环和迭代器删除ArrayList元素
 */
public class ListRemoveDemo {

    public static void main(String[] args) {
        List<String> strings = ListRemoveDemo.initList();

        for2Remove(strings);
//        forI2Remove(strings);
//        iterator2Remove(strings);
        strings.forEach(System.out::println);
    }

    /**
     * 初始化集合
     * @return
     */
    private static List<String> initList() {
        List<String> list = new ArrayList<>();
//        list.add("1");
//        list.add("2");
//        list.add("张三");
//        list.add("2");
//        list.add("lisi");
        list.add("111");
        list.add("222");
        list.add("222");
        list.add("333");
        list.add("222");
        list.add("555");
        return list;
    }

    /**
     * 普通for循环删除
     * @param list
     */
    private static void for2Remove(List<String> list) {
        for (int i = 0; i < list.size(); i++) {
            if ("222".equals(list.get(i))) {
                list.remove(i);
            }
        }
    }

    /**
     * 增强for循环删除
     * @param list
     */
    private static void forI2Remove(List<String> list) {
        for (String e : list) {
            if ("2".equals(e)) {
                list.remove(e);
            }
        }
    }

    /**
     * iterate
     * @param list
     */
    private static void iterator2Remove(List<String> list) {
        Iterator<String> iterator = list.iterator();
        while(iterator.hasNext()) {
            String next = iterator.next();
            if ("2".equals(next)) {
                list.remove(next);
            }
        }
    }

}
